
<!DOCTYPE HTML>
<html lang="zh-hans" >
    <head>
        <meta charset="UTF-8">
        <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
        <title>flutter第三方库 · Aivin开发笔记</title>
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <meta name="description" content="">
        <meta name="generator" content="GitBook 3.2.3">
        <meta name="author" content="Aivin">
        
        
    
    <link rel="stylesheet" href="../gitbook/style.css">

    
            
                
                <link rel="stylesheet" href="../gitbook/gitbook-plugin-search-plus/search.css">
                
            
                
                <link rel="stylesheet" href="../gitbook/gitbook-plugin-anchor-navigation-ex/style/plugin.css">
                
            
                
                <link rel="stylesheet" href="../gitbook/gitbook-plugin-fontsettings/website.css">
                
            
                
                <link rel="stylesheet" href="../gitbook/gitbook-plugin-tbfed-pagefooter/footer.css">
                
            
                
                <link rel="stylesheet" href="../gitbook/gitbook-plugin-donate/plugin.css">
                
            
                
                <link rel="stylesheet" href="../gitbook/gitbook-plugin-local-video/video-js.min.css">
                
            
                
                <link rel="stylesheet" href="../gitbook/gitbook-plugin-splitter/splitter.css">
                
            
                
                <link rel="stylesheet" href="../gitbook/gitbook-plugin-highlight/website.css">
                
            
                
                <link rel="stylesheet" href="../gitbook/gitbook-plugin-theme-comscore/test.css">
                
            
        

    

    
        
        <link rel="stylesheet" href="../styles/website.css">
        
    

        
    
    
    
    <meta name="HandheldFriendly" content="true"/>
    <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <link rel="apple-touch-icon-precomposed" sizes="152x152" href="../gitbook/images/apple-touch-icon-precomposed-152.png">
    <link rel="shortcut icon" href="../gitbook/images/favicon.ico" type="image/x-icon">

    
    <link rel="next" href="flutter异常.html" />
    
    
    <link rel="prev" href="flutter控件.html" />
    

    
        <link rel="shortcut icon" href='../assets/images/favicon.ico' type="image/x-icon">
    
    
        <link rel="bookmark" href='../assets/images/favicon.ico' type="image/x-icon">
    
    
    

    </head>
    <body>
        
<div class="book">
    <div class="book-summary">
        
            
<div id="book-search-input" role="search">
    <input type="text" placeholder="输入并搜索" />
</div>

            
                <nav role="navigation">
                


<ul class="summary">
    
    

    

    
        
        
    
        <li class="chapter " data-level="1.1" data-path="../">
            
                <a href="../">
            
                    
                    个人信息
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2" data-path="flutter配置.html">
            
                <a href="flutter配置.html">
            
                    
                    flutter配置
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.3" data-path="flutter语法.html">
            
                <a href="flutter语法.html">
            
                    
                    flutter
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.4" data-path="flutter控件.html">
            
                <a href="flutter控件.html">
            
                    
                    flutter控件
            
                </a>
            

            
        </li>
    
        <li class="chapter active" data-level="1.5" data-path="flutter第三方库.html">
            
                <a href="flutter第三方库.html">
            
                    
                    flutter第三方库
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.6" data-path="flutter异常.html">
            
                <a href="flutter异常.html">
            
                    
                    flutter异常
            
                </a>
            

            
        </li>
    

    

    <li class="divider"></li>

    <li>
        <a href="https://www.gitbook.com" target="blank" class="gitbook-link">
            本书使用 GitBook 发布
        </a>
    </li>
</ul>


                </nav>
            
        
    </div>

    <div class="book-body">
        
            <div class="body-inner">
                
                    

<div class="book-header" role="navigation">
    

    <!-- Title -->
    <h1>
        <i class="fa fa-circle-o-notch fa-spin"></i>
        <a href=".." >flutter第三方库</a>
    </h1>
</div>




                    <div class="page-wrapper" tabindex="-1" role="main">
                        <div class="page-inner">
                            
<div class="search-plus" id="book-search-results">
    <div class="search-noresults">
    
                                <section class="normal markdown-section">
                                
                                <div id="anchor-navigation-ex-navbar"><i class="fa fa-navicon"></i><ul><li><span class="title-icon "></span><a href="#flutter&#x7B2C;&#x4E09;&#x65B9;&#x5E93;"><b>1. </b>flutter&#x7B2C;&#x4E09;&#x65B9;&#x5E93;</a></li><ul><li><span class="title-icon "></span><a href="#packageinfo-&#x83B7;&#x53D6;&#x7248;&#x672C;&#x53F7;&#x7B49;"><b>1.1. </b>package_info &#x83B7;&#x53D6;&#x7248;&#x672C;&#x53F7;&#x7B49;</a></li><li><span class="title-icon "></span><a href="#urllauncher"><b>1.2. </b>url_launcher</a></li><li><span class="title-icon "></span><a href="#flutterbloc"><b>1.3. </b>flutter_bloc</a></li><li><span class="title-icon "></span><a href="#sharedpreferences"><b>1.4. </b>shared_preferences</a></li><li><span class="title-icon "></span><a href="#dio"><b>1.5. </b>dio</a></li><li><span class="title-icon "></span><a href="#eventbus"><b>1.6. </b>event_bus</a></li><li><span class="title-icon "></span><a href="#flutterscreenutil"><b>1.7. </b>flutter_screenutil</a></li><li><span class="title-icon "></span><a href="#modalbottomsheet"><b>1.8. </b>modal_bottom_sheet</a></li><li><span class="title-icon "></span><a href="#pathdrawing"><b>1.9. </b>path_drawing</a></li><li><span class="title-icon "></span><a href="#toast"><b>1.10. </b>toast</a></li><li><span class="title-icon "></span><a href="#fluttertts"><b>1.11. </b>flutter_tts</a></li><li><span class="title-icon "></span><a href="#otaupdate"><b>1.12. </b>ota_update</a></li><li><span class="title-icon "></span><a href="#cupertinoicons"><b>1.13. </b>cupertino_icons</a></li><li><span class="title-icon "></span><a href="#equatable"><b>1.14. </b>equatable</a></li><li><span class="title-icon "></span><a href="#1"><b>1.15. </b>1</a></li></ul></ul></div><a href="#flutter&#x7B2C;&#x4E09;&#x65B9;&#x5E93;" id="anchorNavigationExGoTop"><i class="fa fa-arrow-up"></i></a><h1 id="flutter&#x7B2C;&#x4E09;&#x65B9;&#x5E93;"><a name="flutter&#x7B2C;&#x4E09;&#x65B9;&#x5E93;" class="anchor-navigation-ex-anchor" href="#flutter&#x7B2C;&#x4E09;&#x65B9;&#x5E93;"><i class="fa fa-link" aria-hidden="true"></i></a>1. flutter&#x7B2C;&#x4E09;&#x65B9;&#x5E93;</h1>
<h2 id="packageinfo-&#x83B7;&#x53D6;&#x7248;&#x672C;&#x53F7;&#x7B49;"><a name="packageinfo-&#x83B7;&#x53D6;&#x7248;&#x672C;&#x53F7;&#x7B49;" class="anchor-navigation-ex-anchor" href="#packageinfo-&#x83B7;&#x53D6;&#x7248;&#x672C;&#x53F7;&#x7B49;"><i class="fa fa-link" aria-hidden="true"></i></a>1.1. package_info &#x83B7;&#x53D6;&#x7248;&#x672C;&#x53F7;&#x7B49;</h2>
<p>&#x7248;&#x672C;&#x53F7;&#x5728; pubspec.yaml version &#x4E2D;&#x914D;&#x7F6E;</p>
<pre><code class="lang-text">https://pub.flutter-io.cn/packages/package_info
PackageInfo.fromPlatform().then((PackageInfo packageInfo) {
  String appName = packageInfo.appName;
  String packageName = packageInfo.packageName;
  String version = packageInfo.version;
  String buildNumber = packageInfo.buildNumber;
});
</code></pre>
<h2 id="urllauncher"><a name="urllauncher" class="anchor-navigation-ex-anchor" href="#urllauncher"><i class="fa fa-link" aria-hidden="true"></i></a>1.2. url_launcher</h2>
<p>&#x901A;&#x8FC7; url &#x6253;&#x5F00;&#x7B2C;&#x4E09;&#x65B9;&#x5E94;&#x7528; &#xFF0C;&#x4F8B;&#x5982;&#x7F51;&#x5740;&#x6253;&#x5F00;&#x6D4F;&#x89C8;&#x5668; &#xFF0C; &#x62E8;&#x6253;&#x7535;&#x8BDD;&#xFF0C;&#x8C03;&#x7528;&#x7B2C;&#x4E09;&#x65B9;APP&#x7B49;&#x3002;</p>
<pre><code class="lang-text">https://pub.flutter-io.cn/packages/url_launcher/install
_launchURL() async {
const url = &apos;tel:13457980678&apos;;  // &#x5524;&#x8D77;&#x7535;&#x8BDD;&#x754C;&#x9762;
// const url = &apos;weixin://&apos;; &#x5524;&#x8D77;&#x5FAE;&#x4FE1;
//const url = &apos;http://typhoon.zjwater.gov.cn/wap.htm&apos;; // &#x6253;&#x5F00;&#x6D4F;&#x89C8;&#x5668;
if (await canLaunch(url)) {
  await launch(url);
}
}
</code></pre>
<h2 id="flutterbloc"><a name="flutterbloc" class="anchor-navigation-ex-anchor" href="#flutterbloc"><i class="fa fa-link" aria-hidden="true"></i></a>1.3. flutter_bloc</h2>
<pre><code class="lang-text">https://pub.flutter-io.cn/packages/flutter_bloc

// Bloc
&#x4E1A;&#x52A1;&#x903B;&#x8F91;&#x7EC4;&#x4EF6; (Business Logic Component) &#x3002;
Bloc &#x5C06;  Event &#x4E8B;&#x4EF6;&#x8F6C;&#x6362;&#x4E3A; States &#x72B6;&#x6001;.
 &#x6BCF;&#x4E2A; Bloc &#x90FD;&#x6709;&#x4E00;&#x4E2A; add &#x65B9;&#x6CD5;&#xFF0C;&#x7528;&#x6765;&#x6DFB;&#x52A0;&#x65B0;&#x7684; Event &#x5230; mapEventToState &#x4E2D;&#xFF1B;

// BlocBuilder
extends StatefulWidget ...
&#x6784;&#x9020;&#x5668;&#xFF0C;&#x4E3B;&#x8981;&#x7528;&#x4E8E;&#x6784;&#x5EFA; Widget &#x3002;

// BlocProvider
extends Widget ...
BlocProvider &#x4E3A; Bloc &#x7684;&#x4F9B;&#x5E94;&#x8005;&#xFF1B;

// MultiBlocProvider
extends Widget ...
&#x662F;&#x4E00;&#x4E2A;&#x7528;&#x4E8E;&#x5C06;&#x591A;&#x4E2A;BlocProvider&#x5408;&#x5E76;&#x4E3A;&#x4E00;&#x4E2A;BlocProvider&#x7684;&#x7EC4;&#x4EF6;&#x3002;

// BlocListener
t extends Widget ...
&#x7528;&#x4E8E;&#x76D1;&#x542C;&#x72B6;&#x6001;&#x53D8;&#x66F4;&#xFF0C;&#x53EF;&#x5728;&#x6B64;&#x505A;&#x51FA;&#x76F8;&#x5E94;&#x7684;&#x4E1A;&#x52A1;&#x5904;&#x7406;&#xFF1B;
</code></pre>
<h2 id="sharedpreferences"><a name="sharedpreferences" class="anchor-navigation-ex-anchor" href="#sharedpreferences"><i class="fa fa-link" aria-hidden="true"></i></a>1.4. shared_preferences</h2>
<p>key-value &#x5B58;&#x50A8;&#x63D2;&#x4EF6;&#xFF0C; &#x8DDF;android SharedPreferences &#x7684;&#x7C7B;&#x4F3C;&#x3002;</p>
<pre><code class="lang-text">https://pub.flutter-io.cn/packages/shared_preferences

SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setString(KEY_CITY_MODELS, encodeStr);  // &#x4FDD;&#x5B58;
var parseValue = prefs.getString(KEY_CITY_MODELS); // &#x83B7;&#x53D6;
prefs.remove(key);
prefs.clear();
</code></pre>
<h2 id="dio"><a name="dio" class="anchor-navigation-ex-anchor" href="#dio"><i class="fa fa-link" aria-hidden="true"></i></a>1.5. dio</h2>
<p>http &#x7F51;&#x7EDC;&#x8BBF;&#x95EE;&#x6846;&#x67B6;&#x3002;
Dart Http&#x8BF7;&#x6C42;&#x5E93;&#xFF0C;&#x652F;&#x6301;Restful API&#x3001;FormData&#x3001;&#x62E6;&#x622A;&#x5668;&#x3001;&#x8BF7;&#x6C42;&#x53D6;&#x6D88;&#x3001;Cookie&#x7BA1;&#x7406;&#x3001;&#x6587;&#x4EF6;&#x4E0A;&#x4F20;/&#x4E0B;&#x8F7D;&#x3001;&#x8D85;&#x65F6;&#x3002;</p>
<pre><code class="lang-text">int timeout = 15 *1000 ;
BaseOptions options = BaseOptions( baseUrl: &quot;https://www.baidu.com/&quot;,
    connectTimeout:timeout ,
    receiveTimeout:timeout ,
    sendTimeout:timeout );
Dio dia = Dio(options) ;

Interceptor dInter = InterceptorsWrapper(
    onRequest: (RequestOptions options) {
      return options; // &#x62E6;&#x622A;&#x8BF7;&#x6C42;
    },
    onResponse: (Response response) {
      return response;  // &#x62E6;&#x622A;&#x54CD;&#x5E94;
    },
    onError: (DioError error) { // &#x62E6;&#x622A;&#x5F02;&#x5E38;
      print(&quot;&#x62E6;&#x622A;&#x4E86;&#x9519;&#x8BEF;&quot;);
      return error;
    }
);
dia.interceptors.add( dInter); // &#x6DFB;&#x52A0;&#x62E6;&#x622A;&#x5668;

String url=&quot;https://www.baidu.com/&quot; ;
Map&lt;String, dynamic&gt;  param= Map() ;
Response response = await dia.get(url, queryParameters: param);  //  get &#x8BF7;&#x6C42;
var result =  response.data ;
print(&quot;&#x8BF7;&#x6C42;&#x7ED3;&#x679C;=&quot;+ result);
</code></pre>
<h2 id="eventbus"><a name="eventbus" class="anchor-navigation-ex-anchor" href="#eventbus"><i class="fa fa-link" aria-hidden="true"></i></a>1.6. event_bus</h2>
<p>&#x6D88;&#x606F;&#x4F20;&#x9012;&#x6846;&#x67B6;</p>
<pre><code class="lang-text">https://pub.flutter-io.cn/packages/event_bus
https://github.com/marcojakob/dart-event-bus

EventBus eventBus = EventBus();
eventBus.fire(&quot;helloflutter&quot;); // &#x53D1;&#x9001;
StreamSubscription streamSubscription =eventBus.on&lt;String&gt;().listen((event){
  // &#x63A5;&#x6536;
});
streamSubscription.cancel() ; // &#x53D6;&#x6D88;&#x76D1;&#x542C;
streamSubscription.pause() ;//
streamSubscription.resume() ;//
</code></pre>
<h2 id="flutterscreenutil"><a name="flutterscreenutil" class="anchor-navigation-ex-anchor" href="#flutterscreenutil"><i class="fa fa-link" aria-hidden="true"></i></a>1.7. flutter_screenutil</h2>
<p>flutter &#x5C4F;&#x5E55;&#x9002;&#x914D;&#x65B9;&#x6848;&#xFF0C;&#x8BA9;&#x4F60;&#x7684;UI&#x5728;&#x4E0D;&#x540C;&#x5C3A;&#x5BF8;&#x7684;&#x5C4F;&#x5E55;&#x4E0A;&#x90FD;&#x80FD;&#x663E;&#x793A;&#x5408;&#x7406;&#x7684;&#x5E03;&#x5C40;&#x3002;</p>
<pre><code class="lang-text">https://pub.flutter-io.cn/packages/flutter_screenutil
https://github.com/OpenFlutter/flutter_ScreenUtil

//&#x8BBE;&#x7F6E;&#x9002;&#x914D;&#x5C3A;&#x5BF8; (&#x586B;&#x5165;&#x8BBE;&#x8BA1;&#x7A3F;&#x4E2D;&#x8BBE;&#x5907;&#x7684;&#x5C4F;&#x5E55;&#x5C3A;&#x5BF8;) &#x6B64;&#x5904;&#x5047;&#x5982;&#x8BBE;&#x8BA1;&#x7A3F;&#x662F;&#x6309;iPhone6&#x7684;&#x5C3A;&#x5BF8;&#x8BBE;&#x8BA1;&#x7684;(iPhone6 750*1334)
// &#x8BBE;&#x7F6E;&#x5B57;&#x4F53;&#x5927;&#x5C0F;&#x662F;&#x5426;&#x6839;&#x636E;&#x7CFB;&#x7EDF;&#x7684;&#x201C;&#x5B57;&#x4F53;&#x5927;&#x5C0F;&#x201D;&#x8F85;&#x52A9;&#x9009;&#x9879;&#x6765;&#x8FDB;&#x884C;&#x7F29;&#x653E;
// ScreenUtil.init(context);  //&#x9ED8;&#x8BA4; width : 1080px , height:1920px , allowFontScaling:false
ScreenUtil.init(context,designSize: Size(750, 1334), allowFontScaling: false);
// var width =  1.wp ;
var width =  1.sw ; // screen height
var width2 =  0.2.sw ; // screen height &#x5C4F;&#x5E55;&#x5BBD;&#x5EA6;&#x7684;0.2&#x500D;

ScreenUtil().pixelRatio   ;     //&#x8BBE;&#x5907;&#x7684;&#x50CF;&#x7D20;&#x5BC6;&#x5EA6;
ScreenUtil().screenWidth  ; // (sdk&gt;=2.6 : 1.sw)   //&#x8BBE;&#x5907;&#x5BBD;&#x5EA6;
ScreenUtil().screenHeight ; //(sdk&gt;=2.6 : 1.sh)   //&#x8BBE;&#x5907;&#x9AD8;&#x5EA6;
ScreenUtil().bottomBarHeight ; //&#x5E95;&#x90E8;&#x5B89;&#x5168;&#x533A;&#x8DDD;&#x79BB;&#xFF0C;&#x9002;&#x7528;&#x4E8E;&#x5168;&#x9762;&#x5C4F;&#x4E0B;&#x9762;&#x6709;&#x6309;&#x952E;&#x7684;
ScreenUtil().statusBarHeight;  //&#x72B6;&#x6001;&#x680F;&#x9AD8;&#x5EA6; &#x5218;&#x6D77;&#x5C4F;&#x4F1A;&#x66F4;&#x9AD8;  &#x5355;&#x4F4D;dp
ScreenUtil().textScaleFactor; //&#x7CFB;&#x7EDF;&#x5B57;&#x4F53;&#x7F29;&#x653E;&#x6BD4;&#x4F8B;
ScreenUtil().scaleWidth ; // &#x5B9E;&#x9645;&#x5BBD;&#x5EA6;&#x7684;dp&#x4E0E;&#x8BBE;&#x8BA1;&#x7A3F;px&#x7684;&#x6BD4;&#x4F8B;
ScreenUtil().scaleHeight; // &#x5B9E;&#x9645;&#x9AD8;&#x5EA6;&#x7684;dp&#x4E0E;&#x8BBE;&#x8BA1;&#x7A3F;px&#x7684;&#x6BD4;&#x4F8B;
</code></pre>
<h2 id="modalbottomsheet"><a name="modalbottomsheet" class="anchor-navigation-ex-anchor" href="#modalbottomsheet"><i class="fa fa-link" aria-hidden="true"></i></a>1.8. modal_bottom_sheet</h2>
<p>&#x5E95;&#x90E8;&#x5F39;&#x7A97;&#x63A7;&#x4EF6;</p>
<pre><code class="lang-text">https://pub.flutter-io.cn/packages/modal_bottom_sheet
https://github.com/jamesblasco/modal_bottom_sheet
&#x53EF;&#x4EE5;&#x76F4;&#x63A5;&#x7528;&#x7CFB;&#x7EDF;&#x63A7;&#x4EF6;&#xFF0C;&#x6CA1;&#x5FC5;&#x8981;&#x7528;&#x8FD9;&#x4E2A;&#x3002;
</code></pre>
<h2 id="pathdrawing"><a name="pathdrawing" class="anchor-navigation-ex-anchor" href="#pathdrawing"><i class="fa fa-link" aria-hidden="true"></i></a>1.9. path_drawing</h2>
<p>&#x7ED8;&#x5236;&#x865A;&#x7EBF;&#x7684;&#x5DE5;&#x5177;</p>
<pre><code class="lang-text">https://pub.flutter-io.cn/packages/path_drawing
Path _path = Path();
Canvas canvas ;
Paint _paint = Paint();
canvas.drawPath(
    dashPath(_path, dashArray: CircularIntervalList&lt;double&gt;([10, 5])), // &#x6BCF;&#x4E2A;&#x7EBF;&#x6BB5;&#x957F;&#x5EA6;&#x3001;&#x95F4;&#x9694;&#x957F;&#x5EA6;
    _paint);
</code></pre>
<h2 id="toast"><a name="toast" class="anchor-navigation-ex-anchor" href="#toast"><i class="fa fa-link" aria-hidden="true"></i></a>1.10. toast</h2>
<pre><code class="lang-text">https://pub.flutter-io.cn/packages/toast
Toast.show(&quot;Toast plugin app&quot;, context, duration: Toast.LENGTH_SHORT, gravity:  Toast.BOTTOM);
Toast.show(msg, context, duration: duration,
    backgroundColor: backgroundColor,
    textColor: textColor,
    backgroundRadius: backgroundRadius,
    border: border);
</code></pre>
<h2 id="fluttertts"><a name="fluttertts" class="anchor-navigation-ex-anchor" href="#fluttertts"><i class="fa fa-link" aria-hidden="true"></i></a>1.11. flutter_tts</h2>
<p>&#x8BED;&#x97F3;&#x64AD;&#x62A5;</p>
<pre><code class="lang-text">https://pub.flutter-io.cn/packages/flutter_tts
</code></pre>
<h2 id="otaupdate"><a name="otaupdate" class="anchor-navigation-ex-anchor" href="#otaupdate"><i class="fa fa-link" aria-hidden="true"></i></a>1.12. ota_update</h2>
<p>&#x5347;&#x7EA7;&#x3001; &#x4E0B;&#x8F7D;apk</p>
<pre><code class="lang-text">https://pub.flutter-io.cn/packages/ota_update
</code></pre>
<h2 id="cupertinoicons"><a name="cupertinoicons" class="anchor-navigation-ex-anchor" href="#cupertinoicons"><i class="fa fa-link" aria-hidden="true"></i></a>1.13. cupertino_icons</h2>
<p>&#x4E00;&#x4E2A;icon&#x56FE;&#x6807;&#x5E93;&#xFF0C;&#x5177;&#x4F53;&#x600E;&#x4E48;&#x7528; &#x4E0D;&#x77E5;&#x9053;&#x3002;</p>
<pre><code class="lang-text">https://pub.flutter-io.cn/packages/cupertino_icons
</code></pre>
<h2 id="equatable"><a name="equatable" class="anchor-navigation-ex-anchor" href="#equatable"><i class="fa fa-link" aria-hidden="true"></i></a>1.14. equatable</h2>
<p>&#x7528;&#x6765;&#x7B80;&#x5316; &#x5BF9;&#x8C61;&#x6BD4;&#x8F83;&#x7684;&#x4E00;&#x4E2A;&#x5E93;&#x3002; &#x8FD9;&#x4E2A;&#x5E93;&#x5185;&#x90E8;&#x505A;&#x4E86;&#x4E00;&#x4E9B;&#x5904;&#x7406;&#xFF0C;&#x8BA9;&#x6211;&#x4EEC;&#x7B80;&#x5355;&#x5730;&#x7528; == &#x5373;&#x53EF;&#x5224;&#x65AD;&#x5BF9;&#x8C61;&#x662F;&#x5426;&#x76F8;&#x7B49;&#xFF0C;&#x4E0D;&#x7528;&#x91CD;&#x5199;hashcode&#x3002;</p>
<pre><code class="lang-text">https://pub.flutter-io.cn/packages/equatable
</code></pre>
<h2 id="1"><a name="1" class="anchor-navigation-ex-anchor" href="#1"><i class="fa fa-link" aria-hidden="true"></i></a>1.15. 1</h2>
<p><code>text</code></p>
<footer class="page-footer"><span class="copyright">&#x65E0;&#x7248;&#x6743; &#x53EF;&#x4EE5;&#x65E0;&#x9650;&#x5236;&#x4F7F;&#x7528;&#xFF01; all right reserved&#xFF0C;powered by Gitbook</span><span class="footer-modification">&#x8BE5;&#x6587;&#x4EF6;&#x66F4;&#x65B0;&#x65F6;&#x95F4;&#xFF1A;
2020-11-26 13:24:21
</span></footer>
                                
                                </section>
                            
    </div>
    <div class="search-results">
        <div class="has-results">
            
            <h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
            <ul class="search-results-list"></ul>
            
        </div>
        <div class="no-results">
            
            <h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
            
        </div>
    </div>
</div>

                        </div>
                    </div>
                
            </div>

            
                
                <a href="flutter控件.html" class="navigation navigation-prev " aria-label="Previous page: flutter控件">
                    <i class="fa fa-angle-left"></i>
                </a>
                
                
                <a href="flutter异常.html" class="navigation navigation-next " aria-label="Next page: flutter异常">
                    <i class="fa fa-angle-right"></i>
                </a>
                
            
        
    </div>

    <script>
        var gitbook = gitbook || [];
        gitbook.push(function() {
            gitbook.page.hasChanged({"page":{"title":"flutter第三方库","level":"1.5","depth":1,"next":{"title":"flutter异常","level":"1.6","depth":1,"path":"chinese/flutter异常.md","ref":"chinese/flutter异常.md","articles":[]},"previous":{"title":"flutter控件","level":"1.4","depth":1,"path":"chinese/flutter控件.md","ref":"chinese/flutter控件.md","articles":[]},"dir":"ltr"},"config":{"plugins":["-search","search-plus","todo","anchor-navigation-ex","copy-code-button","fontsettings","tbfed-pagefooter","donate","local-video","splitter","favicon","theme-comscore","local-video"],"styles":{"website":"styles/website.css"},"pluginsConfig":{"tbfed-pagefooter":{"copyright":"无版权 可以无限制使用！","modify_label":"该文件更新时间：","modify_format":"YYYY-MM-DD HH:mm:ss"},"todo":{},"splitter":{},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"donate":{"alipay":"http://oyru0ayig.bkt.clouddn.com/201803011956_osChina_支付宝收款码.png","alipayText":"支付宝打赏","button":"打赏","title":"","wechat":"http://oyru0ayig.bkt.clouddn.com/201803011956_osChina_微信收款码.png","wechatText":"微信打赏"},"fontsettings":{"family":"sans","size":2,"theme":"sepia"},"highlight":{},"anchor-navigation-ex":{"associatedWithSummary":true,"float":{"floatIcon":"fa fa-navicon","level1Icon":"","level2Icon":"","level3Icon":"","showLevelIcon":false},"mode":"float","multipleH1":true,"pageTop":{"level1Icon":"","level2Icon":"","level3Icon":"","showLevelIcon":false},"printLog":false,"showGoTop":true,"showLevel":true},"favicon":{"shortcut":"assets/images/favicon.ico","bookmark":"assets/images/favicon.ico"},"theme-comscore":{},"local-video":{},"copy-code-button":{},"sharing":{"all":["facebook","google","twitter","weibo","instapaper"],"facebook":true,"google":false,"instapaper":false,"twitter":true,"vk":false,"weibo":false},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false},"search-plus":{}},"theme":"default","author":"Aivin","pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"variables":{},"title":"Aivin开发笔记","language":"zh-hans","gitbook":"*","description":"Aivin开发笔记"},"file":{"path":"chinese/flutter第三方库.md","mtime":"2020-11-26T05:24:21.073Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2020-12-01T08:13:35.355Z"},"basePath":"..","book":{"language":""}});
        });
    </script>
</div>

        
    <script src="../gitbook/gitbook.js"></script>
    <script src="../gitbook/theme.js"></script>
    
        
        <script src="../gitbook/gitbook-plugin-search-plus/jquery.mark.min.js"></script>
        
    
        
        <script src="../gitbook/gitbook-plugin-search-plus/search.js"></script>
        
    
        
        <script src="../gitbook/gitbook-plugin-copy-code-button/toggle.js"></script>
        
    
        
        <script src="../gitbook/gitbook-plugin-fontsettings/fontsettings.js"></script>
        
    
        
        <script src="../gitbook/gitbook-plugin-donate/plugin.js"></script>
        
    
        
        <script src="../gitbook/gitbook-plugin-local-video/video.min.js"></script>
        
    
        
        <script src="../gitbook/gitbook-plugin-splitter/splitter.js"></script>
        
    
        
        <script src="../gitbook/gitbook-plugin-lunr/lunr.min.js"></script>
        
    
        
        <script src="../gitbook/gitbook-plugin-lunr/search-lunr.js"></script>
        
    
        
        <script src="../gitbook/gitbook-plugin-sharing/buttons.js"></script>
        
    
        
        <script src="../gitbook/gitbook-plugin-theme-comscore/test.js"></script>
        
    

    </body>
</html>

